package com.efast.cafe.portal.dao.api;

import java.util.List;

import com.efast.cafe.portal.bean.api.ApiModuleDefineBean;
import com.efast.cafe.portal.entity.api.ApiModuleDefine;
import com.efast.cafe.portal.entity.api.ApiSystemModuleDef;
import org.springframework.data.repository.query.Param;

/**
 * <p>接口</p>
 * <p>Table: api_system_module_def - 系统模块关系定义</p>
 *
 * @since ${.now}
 */

public interface ApiSystemModuleDefDao {
	
	/**
	 * 新增系统模块关系
	 * @Date        :      2017年1月18日
	 * @param apiSystemModuleDef
	 * @return
	 */
	public int saveSystemModuleDef(ApiSystemModuleDef apiSystemModuleDef);
	
	/**
	 * 修改系统模块关系
	 * @Date        :      2017年1月19日
	 * @param apiSystemModuleDef
	 */
	public void updateSystemModuleDef(ApiSystemModuleDef apiSystemModuleDef);
	
	/**
	 * 查询模块是否已经存在
	 * @Date 2017-4-24
	 * @param apiModuleInsertBean
	 * @return
	 */
	public int moduleIdIsExist(ApiModuleDefineBean apiModuleInsertBean);
	
	/**
	 * 查询系统中的是否还存在模块的状态级别不低于系统状态级别
	 * 状态值,1:发布 2:测试 3:开发，状态值越大，级别越低。
	 * @param systemId
	 * @return
	 */
    public List<ApiModuleDefine> findModuleStatusLtSysStatus(@Param(value="systemId")Integer systemId);
    
    /**
     * 删除指定系统与指定模块的关系
     * @param systemId
     * @param moduleId
     * @Date  2017-4-26
     */
    public void deleteSystemModuleDef(@Param(value="systemId")Integer systemId,@Param(value="moduleId")Integer moduleId);
    
    /**
     * 将原系统下的系统模块关系复制到新系统下
     * @param srcId  原版本系统id
     * @param desId  新版本系统id
     * @param user   操作者
     * @Date 2017-4-26
     */
    public void copySystemModuleDefList(@Param(value="srcId")Integer srcId,@Param(value="desId")Integer desId,@Param(value="user")String user);
    
    /*复用系统*/
	public void reusesSystem(@Param("oldId")Integer oldId, @Param("newId")Integer newId,@Param("createuser")String createuser);

}